Qt 最后一个窗口关闭后会结束UI线程 - sbw Blog

Qt 最后一个窗口关闭后会结束UI线程

来源: 石博文博客 | 浏览: 7217 | 评论: 2 发表时间: 2015-12-01

准确的说,是“最后一个可视的主窗口被关闭时,UI线程将结束”。今天在调试一个程序的时候,程序会弹出一个 QFileDialog 供用户选择文件,但是发现当这个 Dialog 执行返回之后,整个程序都退出了,查阅了资料后发现,是 Qt 特意设置的。



先来看这个神奇的代码

这是主窗口的代码,点击一个Button之后,会弹出一个对话框,并且主窗口会隐藏掉,可是当这个对话框完成返回之后,主程序也退出了,从日志可以看到 ~MainWindow() 被执行。通常情况下,这个效果都不是Coder想要的,后来查阅文档找到了相关说明,当所有“可见”的“主”窗口关闭之后,UI线程就会结束,所谓主窗口,是指parent为空的窗口,有了这个解释,就容易理解这个行为了。


为了防止主程序退出,可以设置不要在所有窗口关闭后退出:



  • 声明: 评论属于其发表者所有,不代表本站的观点和立场.
  • xyz軟體 回复该留言 时间: 2015-12-08

    赞哦~~~

已有 1 位网友发表了一针见血的评论,你还等什么?
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml